package com.example.demo.bis.websocket.service;

import java.util.List;

/**
 * @author lyh
 * @date 2025/7/22 16:14
 */
public interface WebSocketService {

    /**
     * 获取所有已连接客户端的IP地址
     *
     * @return IP地址列表（可能包含重复）
     */
    List<String> getAllConnectedClientIps();

    /**
     * 向所有连接的客户端广播消息
     *
     * @param messageType 消息类型标识（前端用于区分消息类型）
     * @param payload     消息内容（任意可序列化对象）
     */
    void broadcastToAll(String messageType, Object payload);

    /**
     * 向指定会话发送消息
     *
     * @param sessionId   目标会话ID
     * @param messageType 消息类型标识
     * @param payload     消息内容
     * @return 发送成功返回true，失败返回false
     */
    boolean sendToSession(String sessionId, String messageType, Object payload);

    /**
     * 发送系统通知给所有客户端
     *
     * @param title   通知标题
     * @param content 通知内容
     */
    void sendSystemNotification(String title, String content);

    /**
     * 向指定IP列表的客户端发送消息
     *
     * @param ips         目标IP地址列表
     * @param messageType 消息类型标识
     * @param payload     消息内容
     */
    void sendToIps(List<String> ips, String messageType, Object payload);
}
